package api

import (
	"github.com/gin-gonic/gin"
	"monitor_serve/service"
	"net/http"
)

type UserApi struct {
}

// UserSignUpApi:用户注册,传入用户名和密码，用户名和密码不能小于4位，然后调用UserSignUp存到数据库
func (u *UserApi) UserSignUpApi(c *gin.Context) {
	// 1. 获取用户名和密码
	username := c.PostForm("username")
	password := c.PostForm("password")

	// 2. 检查用户名和密码长度
	if len(username) < 4 || len(password) < 4 {
		c.JSON(http.StatusBadRequest, gin.H{"error": "用户名和密码不能小于4位"})
		return
	}
	// 3. 调用UserSignUp存到数据库
	if err := service.ServiceGroupApp.UserService.UserSignUp(username, password); err != nil {
		c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
		return
	}
	// 4. 返回成功响应
	c.JSON(http.StatusOK, gin.H{"message": "用户注册成功"})
}

// UserSignInApi:用户登录,传入用户名和密码，然后调用UserSignIn验证用户名和密码，生成token
func (u *UserApi) UserSignInApi(c *gin.Context) {
	// 1. 获取用户名和密码
	username := c.PostForm("username")
	password := c.PostForm("password")

	// 2. 调用UserSignIn验证用户名和密码，生成token
	token, err := service.ServiceGroupApp.UserService.UserSignIn(username, password)
	if err != nil {
		c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
		return
	}

	// 3. 返回成功响应
	c.JSON(http.StatusOK, gin.H{"token": token})
}

// 获取用户信息
func (u *UserApi) GetUserInfoApi(c *gin.Context) {
	username := c.Query("username")
	user, err := service.ServiceGroupApp.UserService.GetUserInfo(username)
	if err != nil {
		// 如果发生错误，返回错误信息
		c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
		return
	}
	if user == nil {
		// 如果用户不存在，返回 404 Not Found
		c.JSON(http.StatusNotFound, gin.H{"error": "User not found"})
		return
	}
	c.JSON(http.StatusOK, gin.H{"userData": user})
}
